某些情况经常要定期收集信息,当数据量大时,附件就超过了邮件的限制,此时将附件压缩,在通过PHPMailer发送是一个简单可靠的方式。
1,首先下载PHPMailer的函数库 http://sourceforge.net/projects/phpmailer/,放在可以加载的地方
2,配置邮件参数
3,用Linux自带的命令zip -r $filename.zip $filename 压缩附件(或者安装的其他压缩方式,tar等)
4,加载附件发送邮件
protected function _sendMail($subject, $content, $address = '') { $mailer = new PHPmailer(); $mailer->Host = 'smtp.163.com'; $mailer->IsSMTP(); $mailer->SMTPAuth = true; //链家邮件发件人设置 $mailer->Username = "willwcw"; $mailer->Password = 'XXXXXXX'; //密码 $mailer->From = "willwcw@163.com"; $mailer->FromName = "通知邮件"; $mailer->CharSet = "UTF-8"; //收件人设置 $mailer->Encoding = "base64"; $mailer->AddAddress('xxxx@163.com'); //$mailer->AddCC('webrd@l63.com'); //抄送 $filename = $subject.".html"; $file = fopen($filename, "w+"); fwrite($file, $content); fclose($file); //文件太大,采取压缩后附件形式 //shell_exec("tar zcvf $filename.tar $filename "); shell_exec("zip -r $filename.zip $filename "); $mailer->IsHTML(true); $mailer->Subject = $subject; $mailer->Body = $title = "<h1 align='center'>".$this->yesterday.$filename."邮件提醒</h1>"; $tarName = $filename.'.zip'; $mailer->AddAttachment('./'.$tarName, "$tarName");//附件的路径和附件名称 if($mailer->Send()){ Yii::info("send email $subject successful!"); }else{ Yii::warning("sendmail wrong", $mailer->ErrorInfo); } shell_exec("rm $tarName"); shell_exec("rm $filename"); }